/*
 * Fenetre.java
 *
 * Created on 11 juil. 2011, 18:20:28
 */
/**
 *
 * @author jannoned
 */
/*
Dominique Jannone
Guillaume Marre
Yohan Ojeda
Laurent Schiavon
*/

package vue;

import java.awt.BorderLayout;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Paint;
import java.awt.PaintContext;
import java.awt.PopupMenu;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.ColorModel;
import java.nio.ByteOrder;
import java.util.Date;


import javax.management.JMRuntimeException;
import javax.naming.PartialResultException;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.DefaultCellEditor;
import javax.swing.GroupLayout;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.LayoutStyle;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import javax.swing.event.UndoableEditListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.Element;
import javax.swing.text.Position;
import javax.swing.text.Segment;
import javax.swing.tree.DefaultTreeCellEditor;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.xml.bind.ParseConversionEvent;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;

import controleur.Constantes;
import controleur.Control;
import controleur.ControlConference;
import controleur.afficheBodyGraphSupervision;

import model.UserClientDelegate;
import model.eConf;

import java.util.logging.Level;
import java.util.logging.Logger;

public class Fenetre extends JFrame {

	//Attributs
	private eConf eConf;
    private JPanel container = new JPanel();
    private PanneauHeader panneauHeader;
    private PanneauBody panneauBody;
    private PanneauMenu panneauMenu;
    private PanneauFooter panneauFooter;
	private JTextField InputNom, InputPrenom, InputLogin, InputMail, EchoErreurConnexion, InputTitre,
					   InputSujet, InputLoginConnexion, EchoErreurInscription, EchoErreurCreerConference;
	private JPasswordField InputPWD1, InputPWD2, InputPWDConnexion;
	private JRadioButton anonym,  cnil, cg;
	private JComboBox jComboConferencier, jComboAdminConf, jourDebut, moisDebut, anneeDebut,
					  heureDebut, minutesDebut, heureFin, minutesFin, jComboType,
					  jComboParticipant0, jComboParticipant1, jComboParticipant2, jComboParticipant3,
					  jComboParticipant0Role, jComboParticipant1Role, jComboParticipant2Role, jComboParticipant3Role;
	private JComboBox jComboIDConf;
	private Object[][] tabInfosConf;
	private JButton MicroEtatLocal;
	private JButton jbuttonDemandeProfile;
	private JComboBox jComboIDConfPublique;
	private Object[][] tabInfosConfPublique;
	// atrtibuts vues des conferences
	public static final int DEFAULT_WIDTH = 920;
	public static final int DEFAULT_HEIGHT = 730; 

	
//////////////////////////////////////////
//////////////////////////////////////////
//////////////////////////////////////////
///		MODIF YO		//////////////////
//////////////////////////////////////////
//////////////////////////////////////////
//////////////////////////////////////////
// Create a set of panels that can show charts
private ChartPanel panel1;
private ChartPanel panel2;
private ChartPanel panel3;
private ChartPanel panel4;
private ChartPanel panel5;
private ChartPanel panel6;
private ChartPanel panel7;
private ChartPanel panel8;
private JButton panel9;
private JTextField EchoParticipant;
private JPanel panel_Cellule_ParticipantsL1;
private JPanel panel_Cellule_ParticipantsL2;
private JPanel panel_Cellule_ParticipantsL3;
private JPanel panel_Cellule_ParticipantsL4;
//////////////////////////////////////////
//////////////////////////////////////////
//////////////////////////////////////////
///		FIn MODIF YO		//////////////
//////////////////////////////////////////
//////////////////////////////////////////
//////////////////////////////////////////
private static Object[][] tabInfoMonitoring;
//log
public static final Logger logger = Logger.getLogger(Fenetre.class.getName());
	
	
    //Observateurs
    public PanneauHeader getPanneauHeader() {return panneauHeader;}
	public PanneauBody getPanneauBody() {return panneauBody;}
	public PanneauMenu getPanneauMenu() {return panneauMenu;}
	public PanneauFooter getPanneauFooter() {return panneauFooter;}
	public JButton getJbuttonDemandeProfile() {return jbuttonDemandeProfile;}
	// Obs pour le formulaire d'inscription
	public JTextField getInputPrenom() {return InputPrenom;}
	public JTextField getInputNom() {return InputNom;}
	public JTextField getInputLogin() {return InputLogin;}
	public JPasswordField getInputPWD1() {return InputPWD1;}
	public JPasswordField getInputPWD2() {return InputPWD2;}
	public JTextField getInputMail() {return InputMail;}
	public JRadioButton getCg() {return cg;	}
    public JTextField getEchoErreurInscription() {return EchoErreurInscription;}
	// Obs pour le formulaire de connexion
	public JTextField getInputLoginConnexion() {return InputLoginConnexion;}
	public JPasswordField getInputPWDConnexion() {return InputPWDConnexion;}
	public JRadioButton getAnonym() {return anonym;}
	public JRadioButton getCnil() {return cnil;}
	public JTextField getEchoErreurConnexion() {return EchoErreurConnexion;}
	// Obs pour le formulaire création d'une nouvelle conférence
	public JTextField getInputTitre() {	return InputTitre;}
	public JTextField getInputSujet() {	return InputSujet;}
	public JComboBox getjComboConferencier() {return jComboConferencier;}
	public JComboBox getjComboAdminConf() {return jComboAdminConf;}
	public JComboBox getJourDebut() {return jourDebut;}
	public JComboBox getMoisDebut() {return moisDebut;}
	public JComboBox getAnneeDebut() {return anneeDebut;}
	public JComboBox getHeureDebut() {return heureDebut;}
	public JComboBox getMinutesDebut() {return minutesDebut;}
	public JComboBox getHeureFin() {return heureFin;}
	public JComboBox getMinutesFin() {return minutesFin;}
	public JComboBox getjComboType() {return jComboType;}
    public JComboBox getjComboParticipant0() {return jComboParticipant0;}
	public JComboBox getjComboParticipant1() {return jComboParticipant1;}
	public JComboBox getjComboParticipant2() {return jComboParticipant2;}
	public JComboBox getjComboParticipant3() {return jComboParticipant3;}
	public JComboBox getjComboParticipant0Role() {return jComboParticipant0Role;}
	public JComboBox getjComboParticipant1Role() {return jComboParticipant1Role;}
	public JComboBox getjComboParticipant2Role() {return jComboParticipant2Role;}
	public JComboBox getjComboParticipant3Role() {return jComboParticipant3Role;}
	public JTextField getEchoErreurCreerConference() {return EchoErreurCreerConference;}
	// Obs pour le formulaire rejoindre une conference
	public JComboBox getjComboIDConf() {return jComboIDConf;}
	public JComboBox getjComboIDConfPub() {return jComboIDConfPublique;}
	// Get infos sur les conferences
	public Object[][] getTabInfosConf() {return tabInfosConf;}
	public Object[][] getTabInfosConfPublique() {return tabInfosConfPublique;}
	// Get bouton rejoindre conf 
	public int getidConf() {
		// Recupere la valeur de l'id de la conférence
		  int idConf = Integer.parseInt(getjComboIDConf().getSelectedItem().toString());
		return idConf;
	}
	public int getidConfPub() {
		// Recupere la valeur de l'id de la conférence
		  int idConfPub = Integer.parseInt(getjComboIDConfPub().getSelectedItem().toString());
		return idConfPub;
	}
	
	
	public static Object[][] getTabInfoMonitoring() {
		return tabInfoMonitoring;
	}
	
	//Mutateurs
	
	

	// Constructeur
    public Fenetre(eConf econf){
            eConf=econf;
            this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
            this.setTitle("e-Conf");
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setLocationRelativeTo(null);
            this.setResizable(false);
            initComposant();
            this.setContentPane(container);
            this.setVisible(true);
    }

	// Methode d'initialisation de la fenetre
    private void initComposant(){
    		panneauHeader = new PanneauHeader();
			panneauBody = new PanneauBody();
			panneauMenu = new PanneauMenu(this,eConf);
        	panneauFooter = new PanneauFooter();
    		container.setLayout(new BorderLayout());
            container.add(panneauHeader.initComponents(), BorderLayout.NORTH);
            container.add(panneauMenu.initComponents(), BorderLayout.WEST);
            container.add(panneauBody.initComponents(), BorderLayout.CENTER);
            container.add(panneauFooter.initComponents(), BorderLayout.PAGE_END);  
    }

	// Methode update container
    public void updateGUI(){
    	container.updateUI();
    	this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    }
    
    // new Boutton vide
    private JButton JButtonVide(){
    	JButton jButtonVide = new JButton("");
    	jButtonVide.setVisible(false);
    	return jButtonVide;
    }
    
    /*
	 * * GESTION DES VUES POUR LE PANEL BODY
	 * methode afficheBody...
	 */
    
    // methode affiche a propos
	public void afficheBodyAPropos(){
		JPanel panel_Body_APropos = panneauBody.getBody_panel();
		panel_Body_APropos.removeAll();
		panel_Body_APropos.setLayout(new FlowLayout(FlowLayout.LEFT));
		JLabel texte = new JLabel();
		texte.setFont(new Font("Times new roman", Font.BOLD, 16));
		String valueTexte = "<html><br><br><br><b>&nbsp&nbsp&nbsp&nbsp&nbsp Groupe :<br><br>" +
								  "<i>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp  eConf <br><br><br>" +
								  "<i>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp  Le logiciel eConf est une solution d'audio conférence conçue <br>" +
								  "<i>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp  par des spécialistes pour les professionnels <br><br><br>" +
								  "&nbsp&nbsp&nbsp&nbsp&nbsp  Conception : <br><br>" +
								  "<i>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp  2011 - v1.0 <br><br><t><br>" +
								  "<b>&nbsp&nbsp&nbsp&nbsp&nbsp Réalisation :<br><br>" +
								  "<i>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp  Marre Guillaume - développeur<br><br>" +
								  "<i>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp  Ojeda Yohan - développeur<br><br>" +
								  "<i>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp  Schiavon Laurent - développeur<br><br>" +
								  "<i>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp  Jannone Dominique - développeur<br><br>" +
								  "</html>";
		texte.setText(valueTexte);
		panel_Body_APropos.add(texte);
		this.updateGUI();
	}
	
	public void afficheBodyAccueil(String prenom, String nom){
		JPanel panel_Body_Accueil = panneauBody.getBody_panel();
		panel_Body_Accueil.removeAll();
		panel_Body_Accueil.setLayout(new FlowLayout(FlowLayout.CENTER));
		JLabel texte = new JLabel();
		texte.setFont(new Font("Times new roman", Font.BOLD, 16));
        texte.setText(	"<html><br><br><br>Bonjour" +" " +prenom +" "+nom +",<br><br>" +
        			  	" Vous pouvez dès à présent consulter les conférences via la section Conférences.<br><br>" +
        			  	" Vous pouvez également créer des conférences et consulter vos données <br><br>" +
        			  	" via la section Profil. <br><br>" +
        			  	" Si vous rencontrez un problème, contacter votre administrateur système.<br><br>" +
//        			  	" Responsable administratif : 7465 .<br><br>" +
//        			  	" Administrateur Système : 7427 .<br><br>" +
//        			  	" Technicien : 7412<br><br>" +
						"<html>");
        panel_Body_Accueil.add(texte);
		this.updateGUI();
	}
	
	public void afficheBodyConnexion(){
		// recupere la valeur du text du button Connexion
		
		// si le boutton est Connexion, l'utilisateur n'est pas connecté
	
			JPanel panel_Body_Connexion = panneauBody.getBody_panel();
			panel_Body_Connexion.removeAll();
			panel_Body_Connexion.setLayout(new GridLayout(20,4));
	
			// ligne texte
			JLabel EchoAuth = new JLabel("Authentification");
			EchoAuth.setFont(new Font("Times new roman", Font.BOLD, 24));
			// ligne Login
			JTextField EchoLogin = new JTextField ("Saisir votre identifiant", 20);
			EchoLogin.setFocusable(false);
			EchoLogin.setOpaque(false);
//			InputLoginConnexion.setCursor(this.getCursor());
			InputLoginConnexion = new JTextField ("", 20);
			// ligne Password
			JTextField EchoPWD = new JTextField ("Saisir votre mot de passe", 20);
			EchoPWD.setFocusable(false);
			EchoPWD.setOpaque(false);
			
			InputPWDConnexion = new JPasswordField ("", 20);
			// Connexion anonyme
			anonym = new JRadioButton ("Connexion en tant qu'anonyme ");
			// Affiche la CNIL
			
			// Valider la CNIL
			cnil = new JRadioButton ("Terme CNIL");
			cnil.setSelected(true);
			cnil.setVisible(false);
			// Boutton valider
			JButton connexion = new JButton("Valider");
			connexion.addActionListener(new Control(this, eConf, InputLoginConnexion.getText()));
			
			// Boutton erreur
			EchoErreurConnexion = new JTextField ("Erreur dans la saisie des informations", 18);
			EchoErreurConnexion.setForeground(Color.RED);
			EchoErreurConnexion.setVisible(false);
			
			// ajout des composant dans le panel
			panel_Body_Connexion.add(EchoAuth);
			panel_Body_Connexion.add(EchoLogin);
			panel_Body_Connexion.add(InputLoginConnexion);
			panel_Body_Connexion.add(EchoPWD);
			panel_Body_Connexion.add(InputPWDConnexion);
			panel_Body_Connexion.add(anonym);
			panel_Body_Connexion.add(cnil);
			panel_Body_Connexion.add(connexion);
			panel_Body_Connexion.add(EchoErreurConnexion);
		
		this.updateGUI();
	}
	


	public void afficheBodyDeconnexion(){
		// Récupère le panel body
		JPanel panel_Body_Vue_Supervision = panneauBody.getBody_panel();
		panel_Body_Vue_Supervision.removeAll();
		// Ajout du texte d'accueil
			JLabel texte = new JLabel();
			texte.setFont(new Font("Times new roman", Font.BOLD, 16));
	        texte.setText(	"<html><br><br>Bienvenue,<br><br>" +
 			  	" merci d'utiliser la solution d'audio conférence eConf.<br><br>" +
 			  	" Vous pouvez dès à présent utiliser eConf en vous connectant<br><br>" +
 			  	" en tant qu'anonyme ou prendre le temps de vous inscrire et ainsi<br><br>" +
 			  	" bénéficier de services supplémentaires,<br><br>" +
 			  	"<br><br>" +
 			  	"<br><br>" +
 			  	" l'équipe eConf.<br><br>" +
					" <html>");
	    panel_Body_Vue_Supervision.add(texte);
		// recupere la valeur du text du button Connexion
		JButton jbuttonConnexion = panneauMenu.getjButton_Connexion();
		// si le boutton est Déconnection, l'utilisateur est connecté
		if (jbuttonConnexion.getText().equals("Déconnexion")){
			// Redéfinir le bouton en connection
			jbuttonConnexion.setText("Connexion");
			// Enlever des parametres
			JButton jbuttonAccueil = panneauMenu.getjButton_Accueil();
			panneauMenu.setVisible(jbuttonAccueil, false);
			JButton jbuttonConference = panneauMenu.getjButton_Conference();
			panneauMenu.setVisible(jbuttonConference, false);
			JButton jbuttonCreerConference = panneauMenu.getjButton_CreerConference();
			panneauMenu.setVisible(jbuttonCreerConference, false);
			JButton jbuttonProfil = panneauMenu.getjButton_Profil();
			panneauMenu.setVisible(jbuttonProfil, false);
			jbuttonDemandeProfile = panneauMenu.getjButton_DemandeProfile();
			panneauMenu.setVisible(jbuttonDemandeProfile, false);
			JButton jbuttonSupervision = panneauMenu.getjButton_Supervision();
			panneauMenu.setVisible(jbuttonSupervision, false);
			JButton jbuttonInscription = panneauMenu.getjButton_Inscription();
			panneauMenu.setVisible(jbuttonInscription, true);
		}
		this.updateGUI();
	}
	
	 
	
	public void afficheBodyConferences(Object[][] tabInfoConference, Object[][] tabInfoConferencePublique) {
		tabInfosConf = tabInfoConference;
		tabInfosConfPublique = tabInfoConferencePublique;
		JPanel panel_Body_Vue_Conference = panneauBody.getBody_panel();
		panel_Body_Vue_Conference.removeAll();
			panel_Body_Vue_Conference.setLayout(new GridBagLayout());
				// ligne texte
					JLabel EchoConference = new JLabel("Mes conférences :");
					EchoConference.setFont(new Font("Times new roman", Font.BOLD, 24));
					EchoConference.setBackground(Color.DARK_GRAY);
				// Def table	
					String[] entetes = {"TITRE", "SUJET", "CONFERENCIER", "DATE", "DUREE", "ROLE","STATUT",  "ID"};
			        JTable tableau = new JTable(tabInfosConf, entetes);
			        tableau.setGridColor(Color.cyan);
			        tableau.setAutoResizeMode(tableau.AUTO_RESIZE_OFF);
			        int widthBody = panel_Body_Vue_Conference.getWidth();
				        tableau.getColumnModel().getColumn(0).setPreferredWidth(widthBody/5);
				        tableau.getColumnModel().getColumn(1).setPreferredWidth(widthBody/4);
				        tableau.getColumnModel().getColumn(2).setPreferredWidth(widthBody/6);
				        tableau.getColumnModel().getColumn(3).setPreferredWidth(widthBody/7);
				        tableau.getColumnModel().getColumn(4).setPreferredWidth(widthBody/7);
				        tableau.getColumnModel().getColumn(5).setPreferredWidth(widthBody/10);
				        tableau.getColumnModel().getColumn(6).setPreferredWidth(widthBody/10);
				        tableau.getColumnModel().getColumn(7).setPreferredWidth(widthBody/32);
				// Ligne Saisir ID
					JLabel echoSaisirId = new JLabel("Choisir un ID de conférence :");
					echoSaisirId.setEnabled(false);
				// Ligne pour la saisie de l'id
					jComboIDConf = new JComboBox(controleur.List.getIdTab(tabInfosConf));
				// Bouton de validation
					JButton rejConf = new JButton("Rejoindre Conférence");
					rejConf.addActionListener(new Control(this, eConf));
					
				// ligne texte
					JLabel EchoConferencePublique = new JLabel("Les conférences publiques :");
					EchoConferencePublique.setFont(new Font("Times new roman", Font.BOLD, 24));
					EchoConferencePublique.setBackground(Color.DARK_GRAY);
				// Def table	
					String[] entetesPublique = {"TITRE", "SUJET", "CONFERENCIER", "DATE", "DUREE", "ROLE","STATUT",  "ID"};
			        JTable tableauPublique = new JTable(tabInfoConferencePublique, entetesPublique);
			        
			        tableauPublique.setAutoResizeMode(tableau.AUTO_RESIZE_OFF);
			        tableauPublique.getColumnModel().getColumn(0).setPreferredWidth(widthBody/5);
				        tableauPublique.getColumnModel().getColumn(1).setPreferredWidth(widthBody/4);
				        tableauPublique.getColumnModel().getColumn(2).setPreferredWidth(widthBody/6);
				        tableauPublique.getColumnModel().getColumn(3).setPreferredWidth(widthBody/7);
				        tableauPublique.getColumnModel().getColumn(4).setPreferredWidth(widthBody/7);
				        tableauPublique.getColumnModel().getColumn(5).setPreferredWidth(widthBody/10);
				        tableauPublique.getColumnModel().getColumn(6).setPreferredWidth(widthBody/10);
				        tableauPublique.getColumnModel().getColumn(7).setPreferredWidth(widthBody/32);
				// Ligne Saisir ID
					JLabel echoSaisirIdPublique = new JLabel("Choisir un ID de conférence :");
					echoSaisirIdPublique.setEnabled(false);
				// Ligne pour la saisie de l'id
					jComboIDConfPublique = new JComboBox(controleur.List.getIdTab(tabInfosConfPublique));
				// Bouton de validation
					JButton rejConfPublique = new JButton("Rejoindre Conférence publique");
					rejConfPublique.addActionListener(new Control(this, eConf));
			// Ajout dans le panel
					panel_Body_Vue_Conference.add(EchoConference, 			set_gbc(0, 0, 1, 1, GridBagConstraints.BOTH));
					panel_Body_Vue_Conference.add(tableau.getTableHeader(), set_gbc(3, 0, 6, 1, GridBagConstraints.BOTH));
					panel_Body_Vue_Conference.add(tableau, 					set_gbc(4, 0, 10, 6, GridBagConstraints.BOTH));
					panel_Body_Vue_Conference.add(echoSaisirId,				set_gbc(24, 0, 1, 1, GridBagConstraints.BOTH));
					panel_Body_Vue_Conference.add(jComboIDConf, 			set_gbc(24, 1, 1, 1, GridBagConstraints.HORIZONTAL));
					panel_Body_Vue_Conference.add(rejConf, 					set_gbc(26, 1, 1, 1, GridBagConstraints.REMAINDER));
					panel_Body_Vue_Conference.add(EchoConferencePublique, 			set_gbc(27, 0, 1, 1, GridBagConstraints.BOTH));
					panel_Body_Vue_Conference.add(tableauPublique.getTableHeader(), set_gbc(30, 0, 6, 1, GridBagConstraints.BOTH));
					panel_Body_Vue_Conference.add(tableauPublique, 					set_gbc(31, 0, 10, 6, GridBagConstraints.BOTH));
					panel_Body_Vue_Conference.add(echoSaisirIdPublique,				set_gbc(51, 0, 1, 1, GridBagConstraints.BOTH));
					panel_Body_Vue_Conference.add(jComboIDConfPublique, 			set_gbc(51, 1, 1, 1, GridBagConstraints.HORIZONTAL));
					panel_Body_Vue_Conference.add(rejConfPublique, 					set_gbc(53, 1, 1, 1, GridBagConstraints.REMAINDER));
					
//		pack();
			this.updateGUI();
	}
	  
	

	public void afficheBodyCreerConferences(Object[] tabParticipant) {
		JPanel panel_Body_Creer_Conference = panneauBody.getBody_panel();
		panel_Body_Creer_Conference.removeAll();
		panel_Body_Creer_Conference.setLayout(new GridLayout(20,2));
		// Creation d'une dateTime
		Date date = eConf.dateTimeActuelle();
		
		// ligne texte
		JLabel EchoNewConf = new JLabel("Nouvelle conférence");
		EchoNewConf.setFont(new Font("Times new roman", Font.BOLD, 24));
		// ligne Titre
			// new panel pour afficher le titre
				JPanel panel_Cellule_Titre = new JPanel();
				panel_Cellule_Titre.setLayout(new GridLayout(1,2));
					JTextField EchoTitre = new JTextField ("Titre :", 20);
					EchoTitre.setEditable (false);
					EchoTitre.setFocusable(false);
					EchoTitre.setOpaque(false);
					InputTitre = new JTextField ("", 20);
					panel_Cellule_Titre.add(EchoTitre);
					panel_Cellule_Titre.add(InputTitre);
		// ligne Sujet
				// new panel pour afficher le sujet
				JPanel panel_Cellule_Sujet = new JPanel();
				panel_Cellule_Sujet.setLayout(new GridLayout(1,2));
					JTextField EchoSujet = new JTextField ("Sujet :", 20);
					EchoSujet.setEditable (false);
					EchoSujet.setFocusable(false);
					EchoSujet.setOpaque(false);
					InputSujet = new JTextField ("", 20);
					panel_Cellule_Sujet.add(EchoSujet);
					panel_Cellule_Sujet.add(InputSujet);	
		// ligne Conferencier
					// Requete SQlpour avoir la liste des conférencier
					// ............
				// new panel pour afficher les conferencier
				JPanel panel_Cellule_Conferencier = new JPanel();
				panel_Cellule_Conferencier.setLayout(new GridLayout(1,2));
					JTextField EchoConferencier = new JTextField ("Conférencier :", 20);
					EchoConferencier.setEditable (false);
					EchoConferencier.setFocusable(false);
					EchoConferencier.setOpaque(false);
//					jComboConferencier = new JComboBox(controleur.List.conferencier());
					jComboConferencier = new JComboBox(tabParticipant);
					jComboConferencier.setBackground(Color.WHITE);
					panel_Cellule_Conferencier.add(EchoConferencier);
					panel_Cellule_Conferencier.add(jComboConferencier);	
		// ligne Admin
					// Requete SQlpour avoir la liste des Administrateur de conférence
					// ............
				// new panel pour afficher l'admin de la conf
				JPanel panel_Cellule_AdminConf = new JPanel();
				panel_Cellule_AdminConf.setLayout(new GridLayout(1,2));
					JTextField EchoAdminConf = new JTextField ("Administrateur de conférence :", 20);
					EchoAdminConf.setEditable (false);
					EchoAdminConf.setFocusable(false);
					EchoAdminConf.setOpaque(false);
					jComboAdminConf = new JComboBox(tabParticipant);
					jComboAdminConf.setBackground(Color.WHITE);
					panel_Cellule_AdminConf.add(EchoAdminConf);
					panel_Cellule_AdminConf.add(jComboAdminConf);		
					
		// ligne Date
		JTextField EchoDate = new JTextField ("Plannification :", 20); // "Date (J:M:A) - Durée (H:m) :"
		EchoDate.setFont(new Font("Times new roman", Font.BOLD, 12));
		EchoDate.setEditable(false);
			// new panel pour afficher la date
				JPanel panel_Cellule_Date = new JPanel();
				panel_Cellule_Date.setLayout(new GridLayout(1,6));
				// def des dates
				JTextField EchoNormeDate = new JTextField ("Date J / M / A", 20);
				EchoNormeDate.setEditable(false);
					jourDebut = new JComboBox(controleur.List.jours());
					jourDebut.setSelectedIndex(date.getDate()-1); //-1 car c'est dans la List des jours
					moisDebut = new JComboBox(controleur.List.mois());
					moisDebut.setSelectedIndex(date.getMonth());
					anneeDebut = new JComboBox(controleur.List.annee());
//					anneeDebut.setSelectedIndex(date.getYear());
					panel_Cellule_Date.add(EchoNormeDate);
					panel_Cellule_Date.add(JButtonVide());
					panel_Cellule_Date.add(JButtonVide());
					panel_Cellule_Date.add(jourDebut);
					panel_Cellule_Date.add(moisDebut);
					panel_Cellule_Date.add(anneeDebut);
				
		// ligne Durées
			// new panel pour afficher la date
				JPanel panel_Cellule_Duree = new JPanel();
				panel_Cellule_Duree.setLayout(new GridLayout(1,6));
				// def des durée
					JTextField EchoDe = new JTextField ("De", 20);
					EchoDe.setEditable(false);
					JTextField EchoA = new JTextField ("A", 20);
					EchoA.setEditable(false);
						heureDebut = new JComboBox(controleur.List.heures());
						heureDebut.setSelectedIndex(date.getHours()+1);
						minutesDebut = new JComboBox(controleur.List.minutes());
						heureFin = new JComboBox(controleur.List.heures());
						heureFin.setSelectedIndex(date.getHours()+2);
						minutesFin = new JComboBox(controleur.List.minutes());
						panel_Cellule_Duree.add(EchoDe);
						panel_Cellule_Duree.add(heureDebut);
						panel_Cellule_Duree.add(minutesDebut);
						panel_Cellule_Duree.add(EchoA);
						panel_Cellule_Duree.add(heureFin);
						panel_Cellule_Duree.add(minutesFin);
		// ligne Type
			// new panel pour afficher la date
				JPanel panel_Cellule_Type = new JPanel();
				panel_Cellule_Type.setLayout(new GridLayout(1,2));
					JTextField EchoType = new JTextField ("Type :", 20);
					EchoType.setEditable (false);
					jComboType = new JComboBox(controleur.List.typesConf());
					jComboType.setBackground(Color.WHITE);
					jComboType.addItemListener(new Control(this, eConf));
					panel_Cellule_Type.add(EchoType);
					panel_Cellule_Type.add(jComboType);	
		
		// ligne ParticipentsL1
					// Requete SQlpour avoir la liste des Administrateur de conférence
					// ............
				EchoParticipant = new JTextField ("Participants :", 20); // "Date (J:M:A) - Durée (H:m) :"
				EchoParticipant.setFont(new Font("Times new roman", Font.BOLD, 12));
				EchoParticipant.setEditable(false);
				// new panel pour afficher l'admin de la conf
					panel_Cellule_ParticipantsL1 = new JPanel();
					panel_Cellule_ParticipantsL1.setLayout(new GridLayout(1,2));
						jComboParticipant0 = new JComboBox(tabParticipant);
						jComboParticipant0Role = new JComboBox(controleur.List.roleParticipants());
						panel_Cellule_ParticipantsL1.add(jComboParticipant0);
						panel_Cellule_ParticipantsL1.add(jComboParticipant0Role);
			// ligne ParticipentsL2
					// new panel pour afficher l'admin de la conf
						panel_Cellule_ParticipantsL2 = new JPanel();
						panel_Cellule_ParticipantsL2.setLayout(new GridLayout(1,2));
							jComboParticipant1 = new JComboBox(tabParticipant);
							jComboParticipant1Role = new JComboBox(controleur.List.roleParticipants());
							panel_Cellule_ParticipantsL2.add(jComboParticipant1);
							panel_Cellule_ParticipantsL2.add(jComboParticipant1Role);
			// ligne ParticipentsL2
					// new panel pour afficher l'admin de la conf
						panel_Cellule_ParticipantsL3 = new JPanel();
						panel_Cellule_ParticipantsL3.setLayout(new GridLayout(1,2));
							jComboParticipant2 = new JComboBox(tabParticipant);
							jComboParticipant2Role = new JComboBox(controleur.List.roleParticipants());
							panel_Cellule_ParticipantsL3.add(jComboParticipant2);
							panel_Cellule_ParticipantsL3.add(jComboParticipant2Role);
			// ligne ParticipentsL2
					// new panel pour afficher l'admin de la conf
						panel_Cellule_ParticipantsL4 = new JPanel();
						panel_Cellule_ParticipantsL4.setLayout(new GridLayout(1,2));
							jComboParticipant3 = new JComboBox(tabParticipant);
							jComboParticipant3Role = new JComboBox(controleur.List.roleParticipants());
							panel_Cellule_ParticipantsL4.add(jComboParticipant3);
							panel_Cellule_ParticipantsL4.add(jComboParticipant3Role);
						
		// Boutton valider
		JButton newConf = new JButton("Valider Conférence");
		newConf.addActionListener(new Control(this, eConf));
		
		// Boutton erreur
		EchoErreurCreerConference = new JTextField ("Erreur dans la saisie des informations", 16);
		EchoErreurCreerConference.setForeground(Color.RED);
		EchoErreurCreerConference.setVisible(false);
		
		// ajout des composant dans le panel
		panel_Body_Creer_Conference.add(EchoNewConf);
		panel_Body_Creer_Conference.add(JButtonVide());
		panel_Body_Creer_Conference.add(panel_Cellule_Titre);
		panel_Body_Creer_Conference.add(panel_Cellule_Sujet);
		panel_Body_Creer_Conference.add(panel_Cellule_Conferencier);
		panel_Body_Creer_Conference.add(panel_Cellule_AdminConf);
		panel_Body_Creer_Conference.add(panel_Cellule_Type);
		panel_Body_Creer_Conference.add(JButtonVide());
		panel_Body_Creer_Conference.add(EchoDate);
		panel_Body_Creer_Conference.add(panel_Cellule_Date);
		panel_Body_Creer_Conference.add(panel_Cellule_Duree);
		panel_Body_Creer_Conference.add(JButtonVide());
		panel_Body_Creer_Conference.add(EchoParticipant);
		panel_Body_Creer_Conference.add(panel_Cellule_ParticipantsL1);
		panel_Body_Creer_Conference.add(panel_Cellule_ParticipantsL2);
		panel_Body_Creer_Conference.add(panel_Cellule_ParticipantsL3);
		panel_Body_Creer_Conference.add(panel_Cellule_ParticipantsL4);
		panel_Body_Creer_Conference.add(JButtonVide());
		panel_Body_Creer_Conference.add(newConf);
		panel_Body_Creer_Conference.add(EchoErreurCreerConference);
		
		visilbleComposentsPourCreationConférencePrive(false);
		
		this.updateGUI();
	}
	
	// Methode affiche ou cache si c'est une conférence publique ou privée (lors de la création
		public void visilbleComposentsPourCreationConférencePrive(boolean bool){
			EchoParticipant.setVisible(bool);
			panel_Cellule_ParticipantsL1.setVisible(bool);
			panel_Cellule_ParticipantsL2.setVisible(bool);
			panel_Cellule_ParticipantsL3.setVisible(bool);
			panel_Cellule_ParticipantsL4.setVisible(bool);
		}
	
	public void afficheBodyProfile(String prenom, String nom, String login, String mail) {
		JPanel panel_Body_Vue_Profile = panneauBody.getBody_panel();
		panel_Body_Vue_Profile.removeAll();
		panel_Body_Vue_Profile.setLayout(new GridLayout(2,1));
		
		// Ligne information utilisateur
		// 1er ligne de texte
			// new panel pour afficher l'admin de la conf
			JPanel panel_Cellule_InfoProfile = new JPanel();
			panel_Cellule_InfoProfile.setLayout(new GridLayout(8,1));
				JLabel EchoInfoPerso = new JLabel("Informations personnelles");
				EchoInfoPerso.setFont(new Font("Times new roman", Font.BOLD, 24));
				// ligne user
				JTextField EchoUser = new JTextField ("Utilisateur : "+prenom +" "+nom, 20);
				EchoUser.setEditable(false);
				// ligne login
				JTextField EchoLogin = new JTextField ("Login :"+" "+login, 20);
				EchoLogin.setEditable(false);
				// ligne Mail
				JTextField EchoMail = new JTextField ("Mail :" +" "+mail, 20);
				EchoMail.setEditable(false);
				// Ajout des composants
				panel_Cellule_InfoProfile.add(EchoInfoPerso);
				panel_Cellule_InfoProfile.add(JButtonVide());
				panel_Cellule_InfoProfile.add(EchoUser);
				panel_Cellule_InfoProfile.add(JButtonVide());
				panel_Cellule_InfoProfile.add(EchoLogin);
				panel_Cellule_InfoProfile.add(JButtonVide());
				panel_Cellule_InfoProfile.add(EchoMail);
		// 2em ligne de texte
			// new panel pour afficher l'admin de la conf
				JPanel panel_Cellule_InfoCG = new JPanel();
				JTextArea texte1 = new JTextArea(controleur.List.conditionGenerale());
				texte1.setEditable(false);
				texte1.setFocusable(false);
				texte1.setOpaque(false);
				
				JScrollPane cgText = new JScrollPane(texte1, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
				        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
				panel_Cellule_InfoCG.add(cgText);
				
		// ajout des deux cellule
				panel_Body_Vue_Profile.add(panel_Cellule_InfoProfile);
				panel_Body_Vue_Profile.add(panel_Cellule_InfoCG);
		this.updateGUI();
	}
	
	public void afficheBodyDemandeProfile(Object[][] tabInfos) {
		JPanel panel_Body_Vue_Demande_Profile = panneauBody.getBody_panel();
		panel_Body_Vue_Demande_Profile.removeAll();
		
		/////////////////////////////////////
		panel_Body_Vue_Demande_Profile.setLayout(new GridBagLayout());
		// Titre
		JLabel EchoTitre = new JLabel("Demande en cours :");
		EchoTitre.setFont(new Font("Times new roman", Font.BOLD, 24));
		panel_Body_Vue_Demande_Profile.add(EchoTitre, set_gbc(0, 0, 1, 1, GridBagConstraints.BOTH));
		int nbLigne =0;
		// While
		for (int i = 0; i < tabInfos.length; i++) {
			// Def Panel pour une ligne Info on user	
			JPanel panel_Ligne_User = new JPanel();
			panel_Ligne_User.setLayout(new GridLayout(1,5));
			panel_Ligne_User.setBorder(new javax.swing.border.LineBorder(Color.BLACK, 2));
				// Definition des composant dans le panel
					// 1# Nom user
					JLabel nom_preom = new JLabel(" "+tabInfos[i][1].toString()+" "+tabInfos[i][2].toString());
					panel_Ligne_User.add(nom_preom);
					// 2# bouton vide
					panel_Ligne_User.add(new JLabel(""));
					// 3# bouton validé user
					JButton JbValid = new JButton();
					JbValid.setBackground(Color.WHITE);
					JbValid.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.DEMANDE_PROFILE_VALIDE)));
					JbValid.addActionListener(new Control(this, eConf, tabInfos[i][0].toString(), true));
					panel_Ligne_User.add(JbValid);
					// 4# bouton annulé user
					JButton JbNonValid = new JButton();
					JbNonValid.setBackground(Color.WHITE);
					JbNonValid.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.DEMANDE_PROFILE_NONVALIDE)));
					JbNonValid.addActionListener(new Control(this, eConf, tabInfos[i][0].toString(), false));
					panel_Ligne_User.add(JbNonValid);
					
		// Ajout dans le panel
					panel_Body_Vue_Demande_Profile.add(panel_Ligne_User, set_gbc(i+1, 0, 1, 1, GridBagConstraints.BOTH));
					
			// incem
					nbLigne++;
		}
		
		// Ajout du bouton UPDATE
		JButton JbUpdate = new JButton();
		JbUpdate.setBackground(Color.WHITE);
		JbUpdate.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.UPDATE_DEMANDE_PROFILE)));
		JbUpdate.setText("Update");
		JbUpdate.addActionListener(new Control(this, eConf));
		
		// Ajout dans le panel
		panel_Body_Vue_Demande_Profile.add(JbUpdate, set_gbc(nbLigne+2, 0, 1, 1, GridBagConstraints.BOTH));
		
		/////////////////////////////////////
		
		
		this.updateGUI();
	}
	
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
public void afficheBodySupervision(Object[][] tabInfos) {

logger.log(Level.INFO,"afficheBodySupervision > methode");
JPanel panel_Body_Vue_Supervision = panneauBody.getBody_panel();
panel_Body_Vue_Supervision.removeAll();

panel_Body_Vue_Supervision.setLayout(new GridLayout(3,3));


tabInfoMonitoring = tabInfos;

tabInfosConf = tabInfos;

// ligne texte
JLabel EchoConference = new JLabel("Supervision du serveur e-Conf :");
EchoConference.setFont(new Font("Times new roman", Font.BOLD, 18));
EchoConference.setBackground(Color.DARK_GRAY);
// Def table	
String[] entetes = {"Nom",  "Valeur"};
JTable tableau = new JTable(tabInfosConf, entetes);
tableau.setGridColor(Color.cyan);

//Bouton actualiser les informations de supervision
JButton AcutaliserInfomonitoring = new JButton("Actualiser les informations");
AcutaliserInfomonitoring.addActionListener(new Control(this, eConf));

// Bouton de validation
JButton visugraph = new JButton("Visualisation graphique");
visugraph.addActionListener(new Control(this, eConf));

// Create a set of charts
JFreeChart chart1;
JFreeChart chart2;
JFreeChart chart3;
JFreeChart chart4;
//private JFreeChart chart5;
JFreeChart chart6;
JFreeChart chart7;
JFreeChart chart8;
JFreeChart chart9;

logger.log(Level.INFO,"afficheBodyGraphSupervision > methode");

	
Object[][] tabInfoMonit = Fenetre.getTabInfoMonitoring();

// Holds the data
  DefaultPieDataset dataset = new DefaultPieDataset();
  DefaultPieDataset dataset1 = new DefaultPieDataset();
  DefaultPieDataset dataset2 = new DefaultPieDataset();
  DefaultPieDataset dataset3 = new DefaultPieDataset();
//  CategoryDataset dataset4 = DatasetUtilities.createCategoryDataset("S","C", data);
  DefaultCategoryDataset dataset5 = new DefaultCategoryDataset();
  DefaultCategoryDataset dataset6 = new DefaultCategoryDataset();
  DefaultCategoryDataset dataset7 = new DefaultCategoryDataset();
  DefaultCategoryDataset dataset8 = new DefaultCategoryDataset();


//Initialize the dataset
	
	dataset.setValue("Libre",(Number) tabInfoMonit[2][1]);
    dataset.setValue("Utilisée",(Number) tabInfoMonit[1][1]);
    
    dataset1.setValue("Libre",(Number) tabInfoMonit[5][1]);
    dataset1.setValue("Utilisée",(Number) tabInfoMonit[4][1]);
    
    dataset2.setValue("Libre",(Number) tabInfoMonit[8][1]);
    dataset2.setValue("Occupé",(Number) tabInfoMonit[7][1]);
    
    dataset3.setValue("Utilisé",(Number) tabInfoMonit[13][1]);
    dataset3.setValue("Libre",(Number) tabInfoMonit[14][1]);
    
    dataset5.setValue((Number) tabInfoMonit[15][1], "Créée", "Créée");
    dataset5.setValue((Number) tabInfoMonit[17][1], "En cours", "En cours");
    dataset5.setValue((Number) tabInfoMonit[19][1], "Terminée", "Terminée");
    
    dataset6.setValue((Number) tabInfoMonit[21][1], "Inscrits", "Inscrits");
    dataset6.setValue((Number) tabInfoMonit[22][1], "Non inscrits", "Non inscrits");
    //dataset6.setValue(null, "         ", "             ");
    
    dataset7.setValue((Number) tabInfoMonit[16][1], "Créée", "Créée");
    dataset7.setValue((Number) tabInfoMonit[18][1], "En cours", "En cours");
    dataset7.setValue((Number) tabInfoMonit[20][1], "Terminée", "Terminée");
    

 // Create the charts
 chart1 = ChartFactory.createPieChart3D(
   "Memoire RAM", // The chart title
   dataset,         // The dataset for the chart
   true,          // Is a legend required?
   true,          // Use tooltips
   false          // Configure chart to generate URLs?
 );
 
 chart2 = ChartFactory.createPieChart3D(
   "Memoire SWAP",
   dataset1,
   true,
   true,
   false
 );

 chart3 = ChartFactory.createPieChart3D(
   "CPU",
   dataset2,
   true,
   true,
   false
 );
 
 chart4 = ChartFactory.createPieChart3D(
   "Espace Disque",
   dataset3,
   true,
   true,
   false          
 );


// chart5 = ChartFactory.createLineChart("Network", 
//		 "Network", 
//		 "kps", 
//		 dataset4, 
//		 PlotOrientation.VERTICAL, 
//		 true, 
//		 true, 
//		 false);
 
 chart6 = ChartFactory.createBarChart3D("Conférence privée", 
		 "Status conférence", 
		 "nombre de conférence", 
		 dataset5, 
		 PlotOrientation.HORIZONTAL, 
		 true, 
		 true, 
		 false);
 
 
 chart7 = ChartFactory.createBarChart3D("Utilisateurs", 
		 "Status utilisateur", 
		 "Utilisateurs en attente", 
		 dataset6, 
		 PlotOrientation.HORIZONTAL, 
		 true, 
		 true, 
		 false);
 
 
 chart8 = ChartFactory.createBarChart3D("Conférence publique", 
		 "Status conférence", 
		 "nombre de conférence", 
		 dataset7, 
		 PlotOrientation.HORIZONTAL, 
		 true, 
		 true, 
		 false);
 
  //Create this panel

 this.panel1 = new ChartPanel( chart1 );
 this.panel2 = new ChartPanel( chart2 );
 this.panel3 = new ChartPanel( chart3 );
 this.panel4 = new ChartPanel( chart4 );
// this.panel5 = new ChartPanel( chart5 );
 this.panel6 = new ChartPanel( chart6 );
 this.panel7 = new ChartPanel( chart7 );
 this.panel8 = new ChartPanel( chart8 );
 
 // Definition des cellules
 JPanel cellule1 = new JPanel();
 cellule1.setLayout(new GridLayout(1,1));
 cellule1.setBorder(new javax.swing.border.LineBorder(Color.blue,1));
 cellule1.add(panel1);
 
 JPanel cellule2 = new JPanel();
 cellule2.setLayout(new GridLayout(1,1));
 cellule2.setBorder(new javax.swing.border.LineBorder(Color.blue,1));
 cellule2.add(panel2);
 
 JPanel cellule3 = new JPanel();
 cellule3.setLayout(new GridLayout(1,1));
 cellule3.setBorder(new javax.swing.border.LineBorder(Color.blue,1));
 cellule3.add(panel3);
 
 JPanel cellule4 = new JPanel();
 cellule4.setLayout(new GridLayout(1,1));
 cellule4.setBorder(new javax.swing.border.LineBorder(Color.blue,1));
 cellule4.add(JButtonVide());
 
 JPanel cellule5 = new JPanel();
 cellule5.setLayout(new GridLayout(1,1));
 cellule5.setBorder(new javax.swing.border.LineBorder(Color.blue,1));
 cellule5.add(panel4);
 
 JPanel cellule6 = new JPanel();
 cellule6.setLayout(new GridLayout(1,1));
 cellule6.setBorder(new javax.swing.border.LineBorder(Color.blue,1));
 cellule6.add(JButtonVide());
 
 JPanel cellule7 = new JPanel();
 cellule7.setLayout(new GridLayout(1,1));
 cellule7.setBorder(new javax.swing.border.LineBorder(Color.blue,1));
 cellule7.add(panel6);

 JPanel cellule8 = new JPanel();
 cellule8.setLayout(new GridLayout(1,1));
 cellule8.setBorder(new javax.swing.border.LineBorder(Color.blue,1));
 cellule8.add(panel7);
 
 JPanel cellule9 = new JPanel();
 cellule9.setLayout(new GridLayout(1,1));
 cellule9.setBorder(new javax.swing.border.LineBorder(Color.blue,1));
 cellule9.add(panel8);
 

// Ajout dans le panel
 panel_Body_Vue_Supervision.add(cellule1);
 panel_Body_Vue_Supervision.add(cellule2);
 panel_Body_Vue_Supervision.add(cellule3);
 panel_Body_Vue_Supervision.add(cellule4);
 panel_Body_Vue_Supervision.add(cellule5);
 panel_Body_Vue_Supervision.add(cellule6);
 panel_Body_Vue_Supervision.add(cellule7);
 panel_Body_Vue_Supervision.add(cellule8);
 panel_Body_Vue_Supervision.add(cellule9); 
				

this.updateGUI();
}

////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
	
	public void afficheBodyInscription() {
		JPanel panel_Body_Inscription = panneauBody.getBody_panel();
		panel_Body_Inscription.removeAll();
		
		panel_Body_Inscription.setLayout(new GridLayout(20,2));
		// ligne texte
		JLabel EchoAuth = new JLabel("Création d'un nouveau profil");
		EchoAuth.setFont(new Font("Times new roman", Font.BOLD, 24));
		// ligne Nom
		JTextField EchoNom = new JTextField ("Nom :", 20);
		InputNom = new JTextField ("", 20);
		EchoNom.setEditable (false);
		EchoNom.setFocusable(false);
		EchoNom.setOpaque(false);
		// ligne Prénom
		JTextField EchoPrenom = new JTextField ("Prénom :", 20);
		InputPrenom = new JTextField ("", 20);
		EchoPrenom.setEditable (false);
		EchoPrenom.setFocusable(false);
		EchoPrenom.setOpaque(false);
		// ligne Login
		JTextField EchoLogin = new JTextField ("Utilisateur :", 20);
		InputLogin = new JTextField ("", 20);
		EchoLogin.setEditable (false);
		EchoLogin.setFocusable(false);
		EchoLogin.setOpaque(false);
		// ligne Mot de passe
		JTextField EchoPWD1 = new JTextField ("Mot de passe :", 20);
		InputPWD1 = new JPasswordField ("", 20);
		EchoPWD1.setEditable (false);
		EchoPWD1.setFocusable(false);
		EchoPWD1.setOpaque(false);
		// ligne Mot de passe
		JTextField EchoPWD2 = new JTextField ("Confirmation mot de passe :", 20);
		InputPWD2 = new JPasswordField ("", 20);
		EchoPWD2.setEditable (false);
		EchoPWD2.setFocusable(false);
		EchoPWD2.setOpaque(false);
		// ligne E-Mail
		JTextField EchoMail = new JTextField ("Adresse mail : :", 20);
		InputMail = new JTextField ("", 20);
		EchoMail.setEditable (false);
		EchoMail.setFocusable(false);
		EchoMail.setOpaque(false);
			// ..................
		// Affiche JtextArea pour les condition générale
		JTextArea texte1 = new JTextArea(controleur.List.conditionGenerale());
				texte1.setEditable(false);
				texte1.setFocusable(false);
				texte1.setOpaque(false);
		JScrollPane cgText = new JScrollPane(texte1, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
		        JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		
		
		// Valider la Condition Générale
		cg = new JRadioButton ("J'accepte les conditions générales");
		
		// Boutton valider
		JButton inscription = new JButton("Valider Inscription");
		inscription.addActionListener(new Control(this, eConf));
		
		// Boutton erreur
		EchoErreurInscription = new JTextField ("Erreur dans la saisie des informations", 18);
		EchoErreurInscription.setForeground(Color.RED);
		EchoErreurInscription.setVisible(false);
		
		
		// ajout des composant dans le panel
		panel_Body_Inscription.add(EchoAuth);
		panel_Body_Inscription.add(JButtonVide());
		panel_Body_Inscription.add(EchoNom);
		panel_Body_Inscription.add(InputNom);
		panel_Body_Inscription.add(EchoPrenom);
		panel_Body_Inscription.add(InputPrenom);
		panel_Body_Inscription.add(EchoLogin);
		panel_Body_Inscription.add(InputLogin);
		panel_Body_Inscription.add(EchoPWD1);
		panel_Body_Inscription.add(InputPWD1);
		panel_Body_Inscription.add(EchoPWD2);
		panel_Body_Inscription.add(InputPWD2);
		panel_Body_Inscription.add(EchoMail);
		panel_Body_Inscription.add(InputMail);
		panel_Body_Inscription.add(JButtonVide());
		panel_Body_Inscription.add(cgText);
		panel_Body_Inscription.add(cg);
		panel_Body_Inscription.add(JButtonVide());
		panel_Body_Inscription.add(inscription);
		panel_Body_Inscription.add(EchoErreurInscription);
		
		this.updateGUI();
	}
	

	
	/*
	 * * Recuperation des Informations DES FORMULAIRES POUR LE PANEL BODY
	 * methode getInfo...
	 */
	
	private Object[] getInfoInscription() {
		Object[] infosObject = new Object[6];	
		infosObject[0] = Constantes.DEMANDE_D_INSCRIPTION;
		infosObject[1] = getInputNom().getText();
		infosObject[2] = getInputPrenom().getText();
		infosObject[3] = getInputLogin().getText();
		infosObject[4] = getInputMail().getText();
		infosObject[5] = new String(getInputPWD1().getPassword());
		return infosObject;
	}
	
	private Object[] getInfoConnexion() {
		Object[] infosObject = new Object[4];	
		infosObject[0] = Constantes.DEMANDE_DE_CONNEXION;
		infosObject[1] = getInputLoginConnexion().getText();
		infosObject[2] = new String(getInputPWDConnexion().getPassword());
		infosObject[3] = getAnonym().isSelected();
		return infosObject;
	}
	
	
	private Object[] getInfoCreerConference() {
		Object[] infosObject = new Object[21];	
		infosObject[0] = Constantes.DEMANDE_CREATION_CONFERENCE;
		infosObject[1] = getInputTitre().getText();
		infosObject[2] = getInputSujet().getText();
		infosObject[3] = getjComboConferencier().getSelectedItem().toString();
		if (getjComboAdminConf().getSelectedIndex() == 0){
			infosObject[4] =  getjComboConferencier().getSelectedItem().toString();
		}else{
			infosObject[4] =  getjComboAdminConf().getSelectedItem().toString();
		}
		infosObject[5] =  getjComboType().getSelectedItem().toString();
		infosObject[6] =  getJourDebut().getSelectedItem().toString();
		infosObject[7] =  getMoisDebut().getSelectedItem().toString();
		infosObject[8] =  getAnneeDebut().getSelectedItem().toString();
		infosObject[9] =  getHeureDebut().getSelectedItem().toString();
		infosObject[10] =  getMinutesDebut().getSelectedItem().toString();
		infosObject[11] =  getHeureFin().getSelectedItem().toString();
		infosObject[12] =  getMinutesFin().getSelectedItem().toString();
		infosObject[13] =  getjComboParticipant0().getSelectedItem().toString();
		infosObject[14] =  getjComboParticipant0Role().getSelectedItem().toString();
		infosObject[15] =  getjComboParticipant1().getSelectedItem().toString();
		infosObject[16] =  getjComboParticipant1Role().getSelectedItem().toString();
		infosObject[17] =  getjComboParticipant2().getSelectedItem().toString();
		infosObject[18] =  getjComboParticipant2Role().getSelectedItem().toString();
		infosObject[19] =  getjComboParticipant3().getSelectedItem().toString();
		infosObject[20] =  getjComboParticipant3Role().getSelectedItem().toString();
		return infosObject;
	}
	
	
	public String getRoleUser(int IdConf) {
		String roleUser = null;
		Object[][] tabConc = getTabInfosConf();
		// Serach la ligne with same ID
			for (int lig = 0; lig < tabConc.length; lig++) {
				// Check if iD est le bon
				if (tabConc[lig][7].equals(IdConf)){
					roleUser = (String) tabConc[lig][5];
				}
			}
		return roleUser;
	}
	
	public String getStatut(int IdConf) {
		String getStatut = null;
		Object[][] tabConc = getTabInfosConf();
		// Serach la ligne with same ID
			for (int lig = 0; lig < tabConc.length; lig++) {
				// Check if iD est le bon
				if (tabConc[lig][7].equals(IdConf)){
					getStatut = (String) tabConc[lig][6];
				}
			}
		return getStatut;
	}
	
	public String getStatutPublique(int IdConfPub) {
		String statutPub = null;
		Object[][] tabConcPub = getTabInfosConfPublique();
		// Serach la ligne with same ID
			for (int lig = 0; lig < tabConcPub.length; lig++) {
				// Check if iD est le bon
				if (tabConcPub[lig][7].equals(IdConfPub)){
					statutPub = (String) tabConcPub[lig][6];
				}
			}
		return statutPub;
	}
	
	
	public String getRoleUserPublique(int IdConfPub) {
		String roleUser = null;
		Object[][] tabConcPub = getTabInfosConfPublique();
		// Serach la ligne with same ID
			for (int lig = 0; lig < tabConcPub.length; lig++) {
				// Check if iD est le bon
				if (tabConcPub[lig][7].equals(IdConfPub)){
					roleUser = (String) tabConcPub[lig][5];
				}
			}
		return roleUser;
	}
	
	
	/*
	 * * Vérification des Informations DES FORMULAIRES POUR LE PANEL BODY
	 * methode checkInfo...
	 */

	private boolean checkInfoInscription() {
		// Redef a Zero les border
		getInputNom().setBorder(new LineBorder(Color.lightGray));
		getInputPrenom().setBorder(new LineBorder(Color.lightGray));
		getInputLogin().setBorder(new LineBorder(Color.lightGray));
		getInputMail().setBorder(new LineBorder(Color.lightGray));
		getInputPWD1().setBorder(new LineBorder(Color.lightGray));
		getInputPWD2().setBorder(new LineBorder(Color.lightGray));
		
		// verifie si les Inputs sont vide
		boolean erreur = true;
		if (getInputNom().getText().length() == 0){
			getInputNom().setBorder(new LineBorder(Color.RED));
			erreur = erreur & false;
		}
		if (getInputPrenom().getText().length() == 0){
			getInputPrenom().setBorder(new LineBorder(Color.RED));
			erreur = erreur & false;
		}
		if (getInputLogin().getText().length() == 0){
			getInputLogin().setBorder(new LineBorder(Color.RED));
			erreur = erreur & false;
		}
		if (getInputMail().getText().length() == 0){
			getInputMail().setBorder(new LineBorder(Color.RED));
			erreur = erreur & false;
		}
		if (getInputPWD1().getPassword().length == 0){
			getInputPWD1().setBorder(new LineBorder(Color.RED));
			erreur = erreur & false;
		}
		if (getInputPWD2().getPassword().length == 0){
			getInputPWD2().setBorder(new LineBorder(Color.RED));
			erreur = erreur & false;
		}
		// Default text
		EchoErreurInscription.setText("Erreur dans la saisie des informations");
		
		if(!(new String(getInputPWD1().getPassword())).equals(new String(getInputPWD2().getPassword()))){
			getInputPWD1().setBorder(new LineBorder(Color.RED));
			getInputPWD2().setBorder(new LineBorder(Color.RED));
			EchoErreurInscription.setText("Les mots de passe ne sont pas identique.");
			erreur = erreur & false;
		}
		if (!getCg().isSelected()){
			EchoErreurInscription.setText("Les conditions générales ne sont sélectionnées");
			erreur = erreur & false;
		}
		if(!erreur) return false;
		return true;
	}
	
	private boolean checkInfoConnexion() {
		// Redef a Zero les border
		getInputLoginConnexion().setBorder(new LineBorder(Color.lightGray));
		getInputPWDConnexion().setBorder(new LineBorder(Color.lightGray));
		
		// verifie si les Inputs sont vide
		boolean erreur = true;
		if (getInputLoginConnexion().getText().length() == 0){
			getInputLoginConnexion().setBorder(new LineBorder(Color.RED));
			erreur = erreur & false;
		}
		if (getInputPWDConnexion().getPassword().length == 0 && !getAnonym().isSelected()){
			getInputPWDConnexion().setBorder(new LineBorder(Color.RED));
			erreur = erreur & false;
		}
		if (!getCnil().isSelected()){	
			erreur = erreur & false;}
		if(!erreur) return false;
		return true;
	}
	
	private boolean checkInfoCreerConference() {
		// Redef a Zero les border
		getInputTitre().setBorder(new LineBorder(Color.lightGray));
		getInputSujet().setBorder(new LineBorder(Color.lightGray));
		getjComboConferencier().setBorder(new LineBorder(Color.lightGray));
		getjComboAdminConf().setBorder(new LineBorder(Color.lightGray));
		getjComboType().setBorder(new LineBorder(Color.lightGray));
		getJourDebut().setBorder(new LineBorder(Color.lightGray));
		getMoisDebut().setBorder(new LineBorder(Color.lightGray));
		getAnneeDebut().setBorder(new LineBorder(Color.lightGray));
		getHeureDebut().setBorder(new LineBorder(Color.lightGray));
		getMinutesDebut().setBorder(new LineBorder(Color.lightGray));
		getHeureFin().setBorder(new LineBorder(Color.lightGray));
		getMinutesFin().setBorder(new LineBorder(Color.lightGray));
		
		// verifie si les Inputs sont vide
		boolean erreur = true;
		if (getInputTitre().getText().length() == 0){
			getInputTitre().setBorder(new LineBorder(Color.RED));
			erreur = erreur & false;
		}
		if (getInputSujet().getText().length() == 0){
			getInputSujet().setBorder(new LineBorder(Color.RED));
			erreur = erreur & false;
		}
		
		if (getjComboConferencier().getSelectedIndex() == 0){
			getjComboConferencier().setBorder(new LineBorder(Color.RED));
			erreur = erreur & false;
		}
		
		// Verification de la cohérence de la date
		
		
		
		if(!erreur) return false;
		return true;
	}
	
	
	/*
	 * * GESTION DES FORMULAIRES POUR LE PANEL MENU
	 * methode demandeBody...
	 */  
	
		public boolean demandeBodyCreerConference() {
			JPanel panel_Body_Fin_CreerConf = panneauBody.getBody_panel();
			// if Check  //Get all Informations in Body Creer Conf
			if (checkInfoCreerConference()){
				Object[] value = getInfoCreerConference();
				// Send infoCreerConference "value"
					eConf.EnvoiInfoAuServeur(value);
					// Reponse du serveur
					Object[] reponseServeur = eConf.RecoiReponseDuServeur();
					logger.log(Level.INFO,reponseServeur[0].toString());
					logger.log(Level.INFO,reponseServeur[1].toString());
					int IDRecu = new Integer(reponseServeur[0].toString());
					//... Validation or not
					if (IDRecu == 1){ // opération impossible pour le serveur - retour d'erreur
						logger.log(Level.INFO,"demandeBodycreerConference incorecte: "+reponseServeur[1]);
						//setVisible  erreur a true
						getEchoErreurCreerConference().setText(reponseServeur[1].toString());
						getEchoErreurCreerConference().setVisible(true);
					}
					else {
						// Remove panel
//						panel_Body_Fin_CreerConf.removeAll();
//						JLabel textReussi = new JLabel();
//						textReussi.setText("La conférence a bien été créée," + "\n"+
// 			  	" vous pouvez dès à présent consulter ses informations via la section Conférences" + "\n"+
// 			  	"\n"+
// 			  	"\n"+
// 			  	" l'équipe eConf.");
//						panel_Body_Fin_CreerConf.add(textReussi);
						
						// Remove panel
						panel_Body_Fin_CreerConf.removeAll();
						panel_Body_Fin_CreerConf.setLayout(new GridLayout(1, 1));
							JButton jButReussite = new JButton();
							jButReussite.setRolloverEnabled(false);
							jButReussite.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.VALIDE_CONFERENCE)));
							jButReussite.setText("Création réussie");
							jButReussite.setBackground(Color.WHITE);
							panel_Body_Fin_CreerConf.add(jButReussite);
							
						this.updateGUI();
					}
				
			}
			// les informations sont incorrects
			else {
				//setVisible JtextField erreur a true
				getEchoErreurCreerConference().setVisible(true);
				return false;
			}
			
			return true;
		}
	 
	 
	public void demandeBodyInscription() {
		JPanel panel_Body_Fin_Inscription = panneauBody.getBody_panel();
		// if Check  //Get all Informations in Body Inscription
		if (checkInfoInscription()){
			Object[] value = getInfoInscription();
			// Send infoInscription "value"
				eConf.EnvoiInfoAuServeur(value);
			// Reponse du serveur
				Object[] reponseServeur = eConf.RecoiReponseDuServeur();
				logger.log(Level.INFO,reponseServeur[0].toString());
				logger.log(Level.INFO,reponseServeur[1].toString());
				int IDRecu = new Integer(reponseServeur[0].toString());
				//... Validation or not
				if (IDRecu == 1){ // opération impossible pour le serveur - retour d'erreur
					logger.log(Level.INFO,"demandeBodyInscription incorecte: "+reponseServeur[1]);
					//setVisible  erreur a true
					getEchoErreurInscription().setText(reponseServeur[1].toString());
					getEchoErreurInscription().setVisible(true);
				}
				else {
					// Affiche in body panel la fin d'inscription
//					panel_Body_Fin_Inscription.removeAll();
//					panel_Body_Fin_Inscription.setLayout(new FlowLayout(FlowLayout.CENTER));
//					JLabel texte = new JLabel();
//					texte.setFont(new Font("Times new roman", Font.BOLD, 16));
					String valueTexte = "<html><br><br><br><br>Un mail de confirmation vous sera<br>envoyé lorsque votre inscription sera validée.<br><br>" +
											  "< Merci d'avoir choisi notre solution, <br><br>" +
											  "< L'équipe e-Conf <br><br>" +
											  "</html>";
//					texte.setText(valueTexte);
//					panel_Body_Fin_Inscription.add(texte);
//					this.updateGUI();
					afficheTexteInfo(valueTexte);
				}
			
		}
		// les informations sont incorrects
		else {
			//setVisible JtextField erreur a true
			getEchoErreurInscription().setVisible(true);
		}
	}
	
	
	public boolean demandeBodyConnexion(){
		JPanel panel_Body_Formulaire_Connexion = panneauBody.getBody_panel();
		panel_Body_Formulaire_Connexion.getComponents();
		getEchoErreurConnexion().setVisible(false);
		// Check if user is Anonym
		// if Check  //Get all Informations in Body Inscription
		if (checkInfoConnexion()){
			Object[] value = getInfoConnexion();
			// Attente de confirmation d'authentification de la part du serveur
			// Envoie des infos au serveur
				eConf.EnvoiInfoAuServeur(value);
				
			// Reponse du serveur
				Object[] reponseServeur = eConf.RecoiReponseDuServeur();
				logger.log(Level.INFO,reponseServeur[0].toString());
				logger.log(Level.INFO,reponseServeur[1].toString());
				int IDRecu = new Integer(reponseServeur[0].toString());
				//... Validation or not
				if (IDRecu == 1){ // opération impossible pour le serveur - retour d'erreur
					logger.log(Level.INFO,"demandeBodyConnexion incorecte: "+reponseServeur[1]);
					//setVisible  erreur a true
					getEchoErreurConnexion().setText(reponseServeur[1].toString());
					getEchoErreurConnexion().setVisible(true);
					return false;
				}
				else {
//					String user="anonym";	
//					String user="inscrit";
//					 user="admin";
					
					
					// Activation des différent bontons "Accueil, conférences"
					// si c'est un utilisateur anonyme
					if (reponseServeur[1].equals("anonyme")){
						JButton jbuttonAccueil = panneauMenu.getjButton_Accueil();
						panneauMenu.setVisible(jbuttonAccueil, true);
						JButton jbuttonConference = panneauMenu.getjButton_Conference();
						panneauMenu.setVisible(jbuttonConference, true);
					}
					// si c'est un utilisateur inscrit
					if (reponseServeur[1].equals("inscrit")){
						JButton jbuttonAccueil = panneauMenu.getjButton_Accueil();
						panneauMenu.setVisible(jbuttonAccueil, true);
						JButton jbuttonConference = panneauMenu.getjButton_Conference();
						panneauMenu.setVisible(jbuttonConference, true);
						JButton jbuttonCreerConference = panneauMenu.getjButton_CreerConference();
						panneauMenu.setVisible(jbuttonCreerConference, true);
						JButton jbuttonProfil = panneauMenu.getjButton_Profil();
						panneauMenu.setVisible(jbuttonProfil, true);
						JButton jbuttonConnexion = panneauMenu.getjButton_Connexion();
						jbuttonConnexion.setText("Déconnexion");
						JButton jbuttonInscription = panneauMenu.getjButton_Inscription();
						panneauMenu.setVisible(jbuttonInscription, false);
					}
					// si c'est un utilisateur admin
					if (reponseServeur[1].equals("admin")){
						JButton jbuttonAccueil = panneauMenu.getjButton_Accueil();
						panneauMenu.setVisible(jbuttonAccueil, true);
						JButton jbuttonConference = panneauMenu.getjButton_Conference();
						panneauMenu.setVisible(jbuttonConference, true);
						JButton jbuttonCreerConference = panneauMenu.getjButton_CreerConference();
						panneauMenu.setVisible(jbuttonCreerConference, true);
						JButton jbuttonProfil = panneauMenu.getjButton_Profil();
						panneauMenu.setVisible(jbuttonProfil, true);
						JButton jbuttonDemandeProfile = panneauMenu.getjButton_DemandeProfile();
						panneauMenu.setVisible(jbuttonDemandeProfile, true);
						JButton jbuttonSupervision = panneauMenu.getjButton_Supervision();
						panneauMenu.setVisible(jbuttonSupervision, true);
						JButton jbuttonConnexion = panneauMenu.getjButton_Connexion();
						jbuttonConnexion.setText("Déconnexion");
						JButton jbuttonInscription = panneauMenu.getjButton_Inscription();
						panneauMenu.setVisible(jbuttonInscription, false);
					}
				}
			
		}
		// les informations sont incorrects
		else {
			//setVisible JtextField erreur a true
			getEchoErreurConnexion().setVisible(true);
			this.updateGUI();
			return false;
		}
		this.updateGUI();
		return true;
	}
	
	/*
	 * * GESTION DES VU D'UNE CONF POUR LE PANEL BODY
	 * methode afficheBodyVu...
	 */
	
	// Gestion des vu pour une conférence
	public void afficheBodyVuConference(String roleUser, Object[][] tabLocalIndo1Conf, String idConf){
		logger.log(Level.INFO,"afficheBodyVuConference > methode");	
		JPanel panel_Body_Vue_Conference_Conferencier = panneauBody.getBody_panel();
		panel_Body_Vue_Conference_Conferencier.removeAll();
		panel_Body_Vue_Conference_Conferencier.setLayout(new GridBagLayout());
		
		// Def Panel user Conference	
		JPanel panel_Body_Header = new JPanel();
		panel_Body_Header.setLayout(new GridLayout(1,3));
		panel_Body_Header.setBorder(new javax.swing.border.LineBorder(Color.BLACK, 2));
			// Definition des composant dans le panel header
			JButton userInfoConf = new JButton();
			userInfoConf.setBackground(Color.WHITE);
			userInfoConf.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.USER)));
			userInfoConf.setText(" "+tabLocalIndo1Conf[0][0].toString());
			panel_Body_Header.add(userInfoConf);
			JButton MicroConf = new JButton();
			MicroConf.setBackground(Color.WHITE);
			MicroConf.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_CONFERENCIER_PARLE)));
			MicroConf.setText(controleur.Constantes.MICRO_TEXTE_Confererncier);
			panel_Body_Header.add(MicroConf);
			// new panel 
				JPanel panel_Body_Header_Cerllule3 = new JPanel();
				panel_Body_Header_Cerllule3.setLayout(new GridLayout(1,3));
				JButton audioMuteLocal = new JButton();
				audioMuteLocal.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.AUDIO_MUET)));
				audioMuteLocal.addActionListener(new ControlConference(this, "volumeMuet", eConf));
				panel_Body_Header_Cerllule3.add(audioMuteLocal);
				JButton audioDownLocal = new JButton();
				audioDownLocal.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.AUDIO_DOWN)));
				audioDownLocal.addActionListener(new ControlConference(this, "volumeDown", eConf));
				panel_Body_Header_Cerllule3.add(audioDownLocal);
				JButton audioUpLocal = new JButton();
				audioUpLocal.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.AUDIO_UP)));
				audioUpLocal.addActionListener(new ControlConference(this, "volumeUp", eConf));
				panel_Body_Header_Cerllule3.add(audioUpLocal);
			// add panel in panel body
			panel_Body_Header.add(panel_Body_Header_Cerllule3);	
								
			// ligne texte
				JLabel EchoParticipants = new JLabel("Participants: ");
				EchoParticipants.setFont(new Font("Times new roman", Font.BOLD, 18));
				
	// Ajout dans le panel
			panel_Body_Vue_Conference_Conferencier.add(panel_Body_Header, set_gbc(0, 0, 1, 1, GridBagConstraints.BOTH));
			
			
			logger.log(Level.INFO,"roleUser: "+roleUser);
	// Information no commune par rapport au rolse User
			int roleUserConf = 0;
			if(roleUser.equals(Constantes.ROLE_CONFERENCIER_STRING))roleUserConf = controleur.Constantes.ROLE_CONFERENCIER;
			if(roleUser.equals(Constantes.ROLE_AUDITEUR_STRING))roleUserConf = controleur.Constantes.ROLE_AUDITEUR;
			if(roleUser.equals(Constantes.ROLE_ORATEUR_STRING))roleUserConf = controleur.Constantes.ROLE_ORATEUR;
			if(roleUser.equals(Constantes.ROLE_ADMINCONF_STRING))roleUserConf = controleur.Constantes.ROLE_ADMIN_CONF;
			
			logger.log(Level.INFO,"roleUserConf: "+roleUserConf);
			
		
			
			switch (roleUserConf) {
			// Vu pour un conferencier
				case controleur.Constantes.ROLE_CONFERENCIER:
					// update icTexte pour l'user
					panel_Body_Vue_Conference_Conferencier.add(EchoParticipants, set_gbc(1, 0, 1, 1, GridBagConstraints.BOTH));
					for (int i = 1; i < tabLocalIndo1Conf.length; i++) {
						// Def Panel user actuel	
						JPanel panel_Body_Body = new JPanel();
						panel_Body_Body.setLayout(new GridLayout(0,3));
						panel_Body_Body.setBorder(new javax.swing.border.LineBorder(Color.BLACK, 1));
						// get info de la ligne i 
						Object[] infoLine = controleur.List.getInfoLigneTabe(tabLocalIndo1Conf, i);
							// Pour chaque info un triatement
						logger.log(Level.INFO," "+infoLine[0].toString());
								JButton jbutonUser = new JButton(" "+infoLine[0].toString());
								jbutonUser.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.USER)));
								jbutonUser.setBackground(Color.WHITE);
								panel_Body_Body.add(jbutonUser);
								// 3em element 
								JButton jbutonMicro = new JButton(" - "+infoLine[2].toString());
								jbutonMicro.setBackground(Color.WHITE);
								JButton jbutonStart = new JButton();
								JButton jbutonStop = new JButton();
								JButton jbutonPause = new JButton();
								
								jbutonStart.addActionListener(new ControlConference(this, idConf, infoLine[0].toString(), "Play", this.eConf));
								jbutonStop.addActionListener(new ControlConference(this, idConf, infoLine[0].toString(), "Stop", this.eConf));
//								jbutonPause.addActionListener(new ControlConference(this, idConf, infoLine[0].toString(), "Pause", this.eConf));
								
								// Cherche la value du Micro
								int valueMicro = new Integer(infoLine[1].toString());
								
								if(valueMicro == (Constantes.MICRO_NO_OK)){ 
									jbutonMicro.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_NON_FONCTIONNEMENT)));
									jbutonMicro.setText(controleur.Constantes.MICRO_TEXTE_NON_FONCTIONNEL);
									panel_Body_Body.add(jbutonMicro);
									panel_Body_Body.add(JButtonVide());
//									panel_Body_Body.add(JButtonVide());
								}
								if(valueMicro == (Constantes.MICRO_OK)){ 
									jbutonMicro.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_EN_FONCTIONNEMENT)));
									jbutonStart.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.PAROLE_START)));
									jbutonStop.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.PAROLE_STOP)));
									jbutonMicro.setText(controleur.Constantes.MICRO_TEXTE_FONCTIONNEL);
									panel_Body_Body.add(jbutonMicro);
									panel_Body_Body.add(jbutonStart);
//									panel_Body_Body.add(jbutonStop);
								}
								if(valueMicro == (Constantes.MICRO_ASK)){ 
									jbutonMicro.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_DEMANDE_PARLER)));
									jbutonMicro.setText(infoLine[2].toString());
									jbutonStart.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.PAROLE_START)));
									jbutonStop.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.PAROLE_STOP)));
									jbutonMicro.setText(controleur.Constantes.MICRO_TEXTE_DEMANDE_PAROLE+": "+infoLine[2].toString());
									panel_Body_Body.add(jbutonMicro);
									panel_Body_Body.add(jbutonStart);
//									panel_Body_Body.add(jbutonStop);
								}
								if(valueMicro == (Constantes.MICRO_SPEAK)){ 
									jbutonMicro.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_USER_PARLE)));
									jbutonPause.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.PAROLE_PAUSE)));
									jbutonStop.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.PAROLE_STOP)));
									jbutonMicro.setText(controleur.Constantes.MICRO_TEXTE_EN_COMMUNICATION);
									panel_Body_Body.add(jbutonMicro);
									panel_Body_Body.add(jbutonStop);
//									panel_Body_Body.add(jbutonStop);
								}
								
								// 4em element 
								if (i==0){
									panel_Body_Vue_Conference_Conferencier.add(panel_Body_Body, set_gbc(i+3, 0, 1, 1, GridBagConstraints.BOTH));
								}
								panel_Body_Vue_Conference_Conferencier.add(panel_Body_Body, set_gbc(i+2, 0, 1, 1, GridBagConstraints.BOTH));			
					}
						
					break;
			// Vue pour un auditeur
				case controleur.Constantes.ROLE_AUDITEUR:
					// update icTexte pour l'user
					EchoParticipants.setText("Orateurs: ");
					panel_Body_Vue_Conference_Conferencier.add(EchoParticipants, set_gbc(2, 0, 1, 1, GridBagConstraints.BOTH));
					for (int i = 1; i < tabLocalIndo1Conf.length; i++) {
						// Def Panel user actuel	
						JPanel panel_Body_Body = new JPanel();
						panel_Body_Body.setLayout(new GridLayout(0,1));
						panel_Body_Body.setBorder(new javax.swing.border.LineBorder(Color.BLACK, 1));
						// get info de la ligne i 
						Object[] infoLine = controleur.List.getInfoLigneTabe(tabLocalIndo1Conf, i);
						int etatMiocro = new Integer(infoLine[1].toString());
							// Pour chaque info un triatement 
								JButton jbutonUser = new JButton(" "+infoLine[0].toString());
								if (etatMiocro == controleur.Constantes.MICRO_SPEAK){
									jbutonUser.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_EN_FONCTIONNEMENT)));
								}
								else{ 
									jbutonUser.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.USER)));
								}
								jbutonUser.setBackground(Color.WHITE);
								panel_Body_Body.add(jbutonUser);
						// Affiche que les personnes qui peuvent parler	
								
						if (etatMiocro != controleur.Constantes.MICRO_NO_OK) {
							if (i==0){
								panel_Body_Vue_Conference_Conferencier.add(panel_Body_Body, set_gbc(i+4, 0, 1, 1, GridBagConstraints.BOTH));
							}
							panel_Body_Vue_Conference_Conferencier.add(panel_Body_Body, set_gbc(i+3, 0, 1, 1, GridBagConstraints.BOTH));
						}
					}			
					break;
			// Vue pour un orateur
				case controleur.Constantes.ROLE_ORATEUR:
					// Création du bouton demande parole
					JButton jbuttonDemandeParole = new JButton("Demande de parole");
					jbuttonDemandeParole.addActionListener(new ControlConference(this, idConf, "null", "DemandeParole", this.eConf));
					// update icTexte pour l'user
					EchoParticipants.setText("Orateurs: ");
					panel_Body_Vue_Conference_Conferencier.add(EchoParticipants, set_gbc(1, 0, 1, 1, GridBagConstraints.BOTH));
					for (int i = 1; i < tabLocalIndo1Conf.length; i++) {
						// Def Panel user actuel	
						JPanel panel_Body_Body = new JPanel();
						panel_Body_Body.setLayout(new GridLayout(0,2));
						panel_Body_Body.setBorder(new javax.swing.border.LineBorder(Color.BLACK, 1));
						// get info de la ligne i 
						Object[] infoLine = controleur.List.getInfoLigneTabe(tabLocalIndo1Conf, i);
							// Pour chaque info un triatement 
								JButton jbutonUser = new JButton(" "+infoLine[0].toString());
								jbutonUser.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.USER)));
								jbutonUser.setBackground(Color.WHITE);
								panel_Body_Body.add(jbutonUser);
								// 2em element 
								JButton jbutonMicro = new JButton(" - "+infoLine[2].toString());
								jbutonMicro.setBackground(Color.WHITE);
								
								
								// Cherche la value du Micro
								int valueMicro = new Integer(infoLine[1].toString());
								// Affiche que les personnes qui peuvent parler	
								int etatMiocro = new Integer(infoLine[1].toString());
								if (etatMiocro != controleur.Constantes.MICRO_NO_OK) {
									if(valueMicro == (Constantes.MICRO_OK)){ 
										jbutonMicro.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_EN_FONCTIONNEMENT)));
										jbutonMicro.setText(controleur.Constantes.MICRO_TEXTE_FONCTIONNEL);
										panel_Body_Body.add(jbutonMicro);
									}
									if(valueMicro == (Constantes.MICRO_ASK)){ 
										jbutonMicro.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_DEMANDE_PARLER)));
										jbutonMicro.setText(infoLine[2].toString());
										jbutonMicro.setText(controleur.Constantes.MICRO_TEXTE_DEMANDE_PAROLE+": "+infoLine[2].toString());
										panel_Body_Body.add(jbutonMicro);
									}
									if(valueMicro == (Constantes.MICRO_SPEAK)){ 
										jbutonMicro.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_USER_PARLE)));
										jbutonMicro.setText(controleur.Constantes.MICRO_TEXTE_EN_COMMUNICATION);
										panel_Body_Body.add(jbutonMicro);
									}
									// add element 
									if (i==0){
										panel_Body_Vue_Conference_Conferencier.add(panel_Body_Body, set_gbc(i+3, 0, 1, 1, GridBagConstraints.BOTH));
									}
									panel_Body_Vue_Conference_Conferencier.add(panel_Body_Body, set_gbc(i+2, 0, 1, 1, GridBagConstraints.BOTH));
								}
									
					}
					panel_Body_Vue_Conference_Conferencier.add(jbuttonDemandeParole, set_gbc(tabLocalIndo1Conf.length+3, 0, 1, 1, GridBagConstraints.BOTH));
					break;
			// Vue pour un ADmin de conférence
				case controleur.Constantes.ROLE_ADMIN_CONF:
					// update icTexte pour l'user
					panel_Body_Vue_Conference_Conferencier.add(EchoParticipants, set_gbc(1, 0, 1, 1, GridBagConstraints.BOTH));
					for (int i = 1; i < tabLocalIndo1Conf.length; i++) {
						// Def Panel user actuel	
						JPanel panel_Body_Body = new JPanel();
						panel_Body_Body.setLayout(new GridLayout(0,3));
						panel_Body_Body.setBorder(new javax.swing.border.LineBorder(Color.BLACK, 1));
						// get info de la ligne i 
						Object[] infoLine = controleur.List.getInfoLigneTabe(tabLocalIndo1Conf, i);
							// Pour chaque info un triatement
						logger.log(Level.INFO," "+infoLine[0].toString());
								JButton jbutonUser = new JButton(" "+infoLine[0].toString());
								jbutonUser.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.USER)));
								jbutonUser.setBackground(Color.WHITE);
								panel_Body_Body.add(jbutonUser);
								// 3em element 
								JButton jbutonMicro = new JButton(" - "+infoLine[2].toString());
								jbutonMicro.setBackground(Color.WHITE);
								JButton jbutonStart = new JButton();
								JButton jbutonStop = new JButton();
								JButton jbutonPause = new JButton();
								
								jbutonStart.addActionListener(new ControlConference(this, idConf, infoLine[0].toString(), "Play", this.eConf));
								jbutonStop.addActionListener(new ControlConference(this, idConf, infoLine[0].toString(), "Stop", this.eConf));
//								jbutonPause.addActionListener(new ControlConference(this, idConf, infoLine[0].toString(), "Pause", this.eConf));
								
								// Cherche la value du Micro
								int valueMicro = new Integer(infoLine[1].toString());
								
								if(valueMicro == (Constantes.MICRO_NO_OK)){ 
									jbutonMicro.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_NON_FONCTIONNEMENT)));
									jbutonMicro.setText(controleur.Constantes.MICRO_TEXTE_NON_FONCTIONNEL);
									panel_Body_Body.add(jbutonMicro);
									panel_Body_Body.add(JButtonVide());
//									panel_Body_Body.add(JButtonVide());
								}
								if(valueMicro == (Constantes.MICRO_OK)){ 
									jbutonMicro.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_EN_FONCTIONNEMENT)));
									jbutonStart.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.PAROLE_START)));
									jbutonStop.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.PAROLE_STOP)));
									jbutonMicro.setText(controleur.Constantes.MICRO_TEXTE_FONCTIONNEL);
									panel_Body_Body.add(jbutonMicro);
									panel_Body_Body.add(jbutonStart);
//									panel_Body_Body.add(jbutonStop);
								}
								if(valueMicro == (Constantes.MICRO_ASK)){ 
									jbutonMicro.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_DEMANDE_PARLER)));
									jbutonMicro.setText(infoLine[2].toString());
									jbutonStart.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.PAROLE_START)));
									jbutonStop.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.PAROLE_STOP)));
									jbutonMicro.setText(controleur.Constantes.MICRO_TEXTE_DEMANDE_PAROLE+": "+infoLine[2].toString());
									panel_Body_Body.add(jbutonMicro);
									panel_Body_Body.add(jbutonStart);
//									panel_Body_Body.add(jbutonStop);
								}
								if(valueMicro == (Constantes.MICRO_SPEAK)){ 
									jbutonMicro.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.MICRO_USER_PARLE)));
									jbutonPause.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.PAROLE_PAUSE)));
									jbutonStop.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.PAROLE_STOP)));
									jbutonMicro.setText(controleur.Constantes.MICRO_TEXTE_EN_COMMUNICATION);
									panel_Body_Body.add(jbutonMicro);
									panel_Body_Body.add(jbutonStop);
//									panel_Body_Body.add(jbutonStop);
								}
								
								// 4em element 
								if (i==0){
									panel_Body_Vue_Conference_Conferencier.add(panel_Body_Body, set_gbc(i+3, 0, 1, 1, GridBagConstraints.BOTH));
								}
								panel_Body_Vue_Conference_Conferencier.add(panel_Body_Body, set_gbc(i+2, 0, 1, 1, GridBagConstraints.BOTH));			
					}
					break;
				}
		this.updateGUI();
	}
	
	// Gestion des vu pour une conférence
	public void afficheChargement(){
		logger.log(Level.INFO,"afficheChargement > methode");	
		JPanel panel_Body_Vue_Chargement = panneauBody.getBody_panel();
		panel_Body_Vue_Chargement.removeAll();
		panel_Body_Vue_Chargement.setLayout(new GridLayout(1, 1));
			JButton jButChargement = new JButton();
			jButChargement.setRolloverEnabled(false);
			jButChargement.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.CHARGEMENT)));
			jButChargement.setBackground(Color.WHITE);
			panel_Body_Vue_Chargement.add(jButChargement);
		this.updateGUI();
	}
	
	public void afficheWarningConnectionServer(String texte){
		JPanel panel_Body_Vue_Warning = panneauBody.getBody_panel();
		panel_Body_Vue_Warning.removeAll();
		panel_Body_Vue_Warning.setLayout(new GridLayout(1, 1));
			JButton jButChargement = new JButton();
			jButChargement.setRolloverEnabled(false);
			jButChargement.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.WARNING_CONNECTION_SERVEUR)));
			jButChargement.setText(texte);
			jButChargement.setBackground(Color.WHITE);
			panel_Body_Vue_Warning.add(jButChargement);
		this.updateGUI();
	}
	
	// methode qui permet de definir la contrainte du GridBadLayout
	private GridBagConstraints set_gbc(int row, int column, int width, int height, int fill) {
		GridBagConstraints gbc = new GridBagConstraints();
//			gbc.fill = GridBagConstraints.BOTH; // components grow in both dimensions
			gbc.insets = new Insets(5, 5, 5, 5); // 5-pixel margins on all sides
			gbc.ipadx = 50;
			gbc.ipady = 5;
			gbc.gridy = row;
			gbc.gridx = column;
			gbc.gridwidth = width;
			gbc.gridheight = height;
			gbc.fill = fill;  // GridBagConstraints.NONE .HORIZONTAL .VERTICAL .BOTH
			// leave other fields (eg, anchor) unchanged.
		   return gbc;
		}
	public void afficheFinConference() {
		JPanel panel_Body_FinConference = panneauBody.getBody_panel();
		panel_Body_FinConference.removeAll();
		panel_Body_FinConference.setLayout(new GridLayout(1, 1));
			JButton jButChargement = new JButton();
			jButChargement.setRolloverEnabled(false);
			jButChargement.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.INFO)));
			jButChargement.setText("La conférence est terminée.");
			jButChargement.setBackground(Color.WHITE);
			panel_Body_FinConference.add(jButChargement);
		this.updateGUI();
		
	}
	
	public void afficheTexteInfo(String texte) {
		JPanel panel_Body_FinConference = panneauBody.getBody_panel();
		panel_Body_FinConference.removeAll();
		panel_Body_FinConference.setLayout(new GridLayout(1, 1));
			JButton jButChargement = new JButton();
			jButChargement.setRolloverEnabled(false);
			jButChargement.setIcon(new ImageIcon(ClassLoader.getSystemResource(controleur.Constantes.INFO)));
			jButChargement.setFont(new Font("Times new roman", Font.BOLD, 16));
			jButChargement.setText(texte);
			jButChargement.setBackground(Color.WHITE);
			panel_Body_FinConference.add(jButChargement);
		this.updateGUI();
		
	}

}// Fin de classe